package com.raptor.trustworthycore.util;


import java.util.ArrayList;
import java.util.List;

/**
 * 集合工具类
 *
 */
public final class ListsUtil {

    private ListsUtil() {
    }


    /**
     * 碾平集合咯，主要针对集合元素为集合的情况有效果(把集合套集合解到第一级)
     *
     * @param list
     * @param <T>
     * @return
     */
    @SuppressWarnings("unchecked")
    public static <T> List<T> flatten(List<?> list) {
        List<T> result = new ArrayList<T>();
        for (Object o : list) {
            if (o instanceof List) {
                List<T> subResult = flatten((List<?>) o);
                result.addAll(subResult);
            } else {
                result.add((T) o);
            }
        }
        return result;
    }

    /**
     * 压缩集合，去掉集合中的null记录(返回新集合)
     *
     * @param list
     * @param <T>
     * @return
     */
    public static <T> List<T> compact(List<T> list) {
        List<T> result = new ArrayList<T>();
        for (T t : list) {
            if (t != null) {
                result.add(t);
            }
        }
        return result;
    }

}
